package org.mig.java.basics.events;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import org.mig.java.basics.igu.IGU;

/**
 *
 * @author Hildegard
 * @date Feb 20, 2014
 * @time 8:47:55 PM
 */
public class GEA implements ActionListener {

    IGU igu;
    private boolean movHorOk = true;
    private boolean movVerOk = true;
    private int PASO_HOR = 1;
    private int PASO_VER = 1;

    public GEA(IGU igu) {
        this.igu = igu;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        colisionArmaPlataforma();
        movimientoHorizontal();
        movimientoVertical();

    }

    public void colisionObjetivo() {
        int xArm = igu.arma.getX();
        int yArm = igu.arma.getY();

        for (int row = 0; row < 9; row++) {
            for (int col = 0; col < 4; col++) {
                if (xArm < igu.label[row][col].getX() + igu.label[row][col].getWidth()
                        || yArm < igu.label[row][col].getY() + igu.label[row][col].getHeight()) {
                    System.out.println("Colision arriba");

                }
            }
        }

    }

    public void colisionArmaPlataforma() {

        int xArm = igu.arma.getX();

        int yArm = igu.arma.getY();
        int xPlat = igu.plataforma.getX();
        int yPlat = igu.plataforma.getY();

        int xPlat2 = igu.plataforma2.getX();
        int yPlat2 = igu.plataforma2.getY();

        igu.infoPlat.setText("Plat: X " + xPlat + " X + Width = " + xPlat + igu.plataforma.getWidth() + " Y: " + igu.plataforma.getY());
        igu.infoArma.setText("Plat: Y " + xArm + " Y + Width = " + xArm + igu.arma.getWidth() + " Y: " + igu.arma.getY() + igu.arma.getX());

        if (xArm + igu.arma.getWidth() > xPlat
                && xArm + igu.arma.getWidth() < xPlat + igu.plataforma.getWidth()
                && yArm + igu.arma.getHeight() == yPlat) {
            System.out.println("Colision");

        } else if (yArm + igu.arma.getHeight() > yPlat + igu.plataforma.getHeight()) {
            System.out.println("BOOM PIERDES");

        } else if (xArm + igu.arma.getWidth() > xPlat2
                && xArm + igu.arma.getWidth() < xPlat2 + igu.plataforma2.getWidth()
                && yArm == igu.plataforma2.getHeight() * 2) {

        }
    }

    public void movimientoHorizontal() {
        int anchoPnl = igu.pnlPrincipal.getWidth();
        int xAct = igu.arma.getX();
        int yAct = igu.arma.getY();
        int xArm = igu.arma.getX();
        int xPlat = igu.plataforma.getX();
        int yArm = igu.arma.getY();
        int yPlat = igu.plataforma.getY();

        int xPlat2 = igu.plataforma2.getX();
        if (movHorOk) {
            xAct += PASO_HOR;
            igu.arma.setLocation(xAct, igu.arma.getY());
            if (xAct + igu.arma.getWidth() > anchoPnl || xArm + igu.arma.getWidth() > xPlat2
                    && xArm + igu.arma.getWidth() < xPlat2 + igu.plataforma2.getWidth()
                    && yArm == igu.plataforma2.getHeight() * 2) {
                movHorOk = false;
            }
        } else {
            xAct -= PASO_HOR;
            igu.arma.setLocation(xAct, igu.arma.getY());
            if (xAct < 0 || xArm + igu.arma.getWidth() > xPlat2
                    && xArm + igu.arma.getWidth() < xPlat2 + igu.plataforma2.getWidth()
                    && yArm == igu.plataforma2.getHeight() * 2) {
                movHorOk = true;
            }

        }
    }

    public void movimientoVertical() {
        int altoPnl = igu.pnlPrincipal.getHeight();
        int yAct = igu.arma.getY();
        int xArm = igu.arma.getX();
        int xPlat = igu.plataforma.getX();
        int yArm = igu.arma.getY();
        int yPlat = igu.plataforma.getY();

        int xPlat2 = igu.plataforma2.getX();
        int yPlat2 = igu.plataforma2.getY();

        if (movVerOk) {
            yAct += PASO_VER;
            igu.arma.setLocation(igu.arma.getX(), yAct);
            if (yAct + igu.arma.getHeight() > altoPnl
                    || xArm + igu.arma.getWidth() > xPlat
                    && xArm + igu.arma.getWidth() < xPlat + igu.plataforma.getWidth()
                    && yArm + igu.arma.getHeight() == yPlat) {
                movVerOk = false;
            } 

        } else {
            yAct -= PASO_VER;
            igu.arma.setLocation(igu.arma.getX(), yAct);
            if (yAct < 0 || xArm + igu.arma.getWidth() > xPlat2
                    && xArm + igu.arma.getWidth() < xPlat2 + igu.plataforma2.getWidth()
                    && yArm == igu.plataforma2.getHeight() * 2) {
                movVerOk = true;
            }

        }
    }

}
